home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_09_08 / 9n08041c < prev    next >
Text File  |  1991-04-22  |  3KB  |  128 lines

  1. /* Example program showing bios_disp.c drawbox.c
  2.    and mouse.c. This program shows off the basics
  3.    of event driven programming under MS-DOS!
  4. */
  5. #include <stdio.h>
  6. #include <dos.h>
  7. #include <bios.h>
  8. #include <box.h>
  9. #include <mouse.h>
  10.  
  11. main()
  12.    {
  13.    void put_menu(void);
  14.    char buffer[128];
  15.    int xinfo,yinfo,binfo,l,r,c,ch;
  16.  
  17.    /* white on blue */
  18.    cur_attr = 0x17;
  19.  
  20.    cls();
  21.  
  22.    /* put up a dummy menu for testing */
  23.    put_menu();
  24.  
  25.    mouse_init();
  26.    mouse_text_cursor(0,0xffff);
  27.    mouse_set_cursor(0,0);
  28.    mouse_cursor(1);
  29.  
  30.    /* report x,y and button status
  31.       until exit line is chosen */
  32.    while(1)
  33.       {
  34.       /* clear out button variables to 0 */
  35.       l=r=c= 0;
  36.  
  37.       /* turn off mouse cursor */
  38.       mouse_cursor(0);
  39.  
  40.       /* get mouse x,y and buttons */
  41.       mouse_status(&binfo,&xinfo,&yinfo);
  42.  
  43.       /* show mouse coordinates */
  44.       bios_move(1,1);
  45.       sprintf(buffer,
  46.       "Mouse X= %d, Mouse Y= %d",xinfo,yinfo);
  47.       bios_puts(buffer);
  48.  
  49.       /* set button variable if needed */
  50.       if(binfo & 1)
  51.          l = 1;
  52.       if(binfo & 2)
  53.          r = 1;
  54.       if(binfo & 4)
  55.          c = 1;
  56.  
  57.       /* show button status */
  58.       bios_move(2,1);
  59.       sprintf(buffer,
  60.       "Left = %d, Center = %d, Right = %d",l,c,r);
  61.       bios_puts(buffer);
  62.  
  63.       /* turn mouse cursor back on */
  64.       mouse_cursor(1);
  65.  
  66.       /* if left button is down,
  67.          show the char under the mouse */
  68.       if(l)
  69.          {
  70.          /* move text cursor to mouse location */
  71.          bios_move(yinfo/8,xinfo/8);
  72.  
  73.          /* turn off mouse cursor */
  74.          mouse_cursor(0);
  75.  
  76.          /* get char at cursor and show it */
  77.          ch = bios_rdchar();
  78.          bios_move(4,1);
  79.          sprintf(buffer,
  80.          "Character under mouse is %c",ch);
  81.          bios_puts(buffer);
  82.  
  83.          /* turn mouse back on */
  84.          mouse_cursor(1);
  85.          }
  86.  
  87.       /* if right button is down
  88.          and on the exit line, quit program */
  89.       if(r)
  90.          {
  91.          /* exit line is line 12 * 8 = 96  */
  92.          if(yinfo == 96)
  93.             break;
  94.          }
  95.  
  96.       /* wait a bit so the mouse cursor shows */
  97.       for(l=0; l<500; l++)
  98.          ;
  99.       }
  100.  
  101.    /* All done. Turn off mouse cursor */
  102.    mouse_cursor(0);
  103.    cls();
  104.    }
  105.  
  106. void put_menu()
  107.    {
  108.    int x;
  109.    char buffer[80];
  110.  
  111.    /* draw a nice box around the display */
  112.    draw_box(0,0,24,79,2);
  113.  
  114.    /* and put up a simple menu */
  115.    for(x = 1; x<6; x++)
  116.       {
  117.       bios_move(x+5,10);
  118.  
  119.       sprintf(buffer,"%d) Menu item",x);
  120.       bios_puts(buffer);
  121.       }
  122.    bios_move(12,10);
  123.    bios_puts(
  124.    "Click right button on this line to exit to DOS");
  125.    }
  126.  
  127.  
  128.